package mmc.cell;

import java.util.Collection;
import java.util.Set;

import mmc.EngineObject;
import mmc.server.Server;

public interface ServerCellManager {

	public void update(Server server, float dt, Set<ServerCell> dirtyCells);
	
	public ServerCell[] getSpawnPackage(EngineObject spawnPoint);
	public void addCellsInRange(EngineObject o, float range, Set<ServerCell> currentlyKnown, Set<ServerCell> newCells);
	
	public BlockIterator getBlocksNearObject(EngineObject o, float range);
	public byte getEnclosingBlock(float x, float y, float z);
	
	public void shutdown();
	
	//debug functions below this point - not optimized for performance
	public Collection<ServerCell> debug_getAllCells();
	public void debug_setBlock(int x, int y, int z, byte value);
	public void debug_compress();
}
